#ifndef UC_BRENTRAV_H
#define UC_BRENTRAV_H 1

#include "zadesk.h"
#include "zrxobject.h"
#include "zrxboiler.h"
#include "zgegbl.h"
#include "ucbrgbl.h"
#include "ucbrtrav.h"


// forward class declarations
class UcGePoint2d;
class UcGeVector3d;
class UcBrElement2d;
class UcBrNode;
class UcBrMesh2dElement2dTraverser;


class DllImpExp UcBrElement2dNodeTraverser : public UcBrTraverser
{
public:
    UCRX_DECLARE_MEMBERS(UcBrElement2dNodeTraverser);
    UcBrElement2dNodeTraverser();
    UcBrElement2dNodeTraverser(const UcBrElement2dNodeTraverser& src);
    ~UcBrElement2dNodeTraverser();
    
    // Assignment operator
    UcBrElement2dNodeTraverser& operator =(const UcBrElement2dNodeTraverser& src);

    // Queries & Initialisers
	UcBr::ErrorStatus   setElement		(const UcBrMesh2dElement2dTraverser& mesh2dElement2dTraverser);
    UcBr::ErrorStatus   setElement		(const UcBrElement2d& element);
    UcBr::ErrorStatus   getElement		(UcBrElement2d& element) const;
    UcBr::ErrorStatus   setNode         (const UcBrNode& node);
    UcBr::ErrorStatus   getNode         (UcBrNode& node) const;

	// Upward links
	// Node usage by original face (1::1)
    UcBr::ErrorStatus   getSurfaceNormal(UcGeVector3d& vector) const;
    UcBr::ErrorStatus   getParamPoint	(UcGePoint2d& point) const;
};


#endif

